Configuring parameters for computer programs (e.g., applications executed by one or more servers) is essential for enabling the programs to run correctly and efficiently. Many programs have configuration parameters, which are specified at run time. Requiring users to specify a long set of configuration parameters complicates the task of the user. It increases the amount of work the user must do. The user may not know what values to choose and may spend considerable extra time configuring the program.
It may also not be possible for the program manufacturer to choose default values that will consistently result in good performance, since performance may be highly dependent on a specific deployment and may also change over time in response to changing workloads presented to the computing system.
In the article by Xi et al., “A Smart Hill-Climbing Algorithm for Application Server Configuration,” Proceedings of WWW2004, p. 287, 2004, a method is described for determining server configuration parameters. However, among other deficiencies, the Xi et al. approach does not address the problem of the large processing overhead associated with testing out different configuration parameters. Further, the Xi et al. approach does not address the problem of optimizing configuration parameters across multiple applications.
There is thus a need for improved systems and methods for automatically determining configuration parameter values.